import store from "../store";

export const baseUrl = 'https://qc.diandian.work' + '/api'
// export const baseUrl = 'http://127.0.0.1:7001' + '/api'
// export const baseUrl = '/api'
const config = {
    baseUrl: baseUrl,
    loadingText: '加载中~',
    loadingTime: 2000,
    header: {
        Accept: 'application/json',
    }
}

const install = (Vue, vm) => {
    // 此为自定义配置参数，具体参数见上方说明
    Vue.prototype.$u.http.setConfig({
      ...config
    });
    // 请求拦截部分，如配置，每次请求前都会执行
    Vue.prototype.$u.http.interceptor.request = (config) => {
        // if(!config.url.includes('login') && !uni.getStorageSync('token')) {
        //     vm.$u.toast('登录过期, 请重新登录');
        //     setTimeout(() => {
        //         uni.reLaunch({
        //             url: '/pages/user/login'
        //         })
        //     }, 1000)
        //     return false;
        // }
        uni.showLoading({
            title: config.loadingText
        })
        config.header['Authorization'] = uni.getStorageSync('token')
        return config;
    }

    // 响应拦截，如配置，每次请求结束都会执行本方法
    Vue.prototype.$u.http.interceptor.response = (res) => {
        console.log('res', res)
        uni.hideLoading()
        if(res.code === 200) {
            // res为服务端返回值，可能有code，result等字段
            // 这里对res.result进行返回，将会在this.$u.post(url).then(res => {})的then回调中的res的到
            // 如果配置了originalData为true，请留意这里的返回值
            return res.data;
        } else if(res.code === 401) {
            store.commit('LOGOUT')
            // 假设201为token失效，这里跳转登录
            uni.showModal({
                title: '提示',
                content: '登录过期, 请重新登录',
                confirmText: '确定',
                confirmColor: '#007AFF',
                success: function (res) {
                    if (res.confirm) {
                        uni.navigateTo({
                            url: '/pages/login/index'
                        })
                    }}
            })
            return false;
        } else {
            console.log('res', res)
            vm.$u.toast(res.msg);
            // 如果返回false，则会调用Promise的reject回调，
            // 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中，res为服务端的返回值
            return false;
        }
    }
}

export default {
    install
}
